package main

import (
	"fmt"
	"go_data_structures_and_algorithms/tool"
	"math"
)

func main() {
	_, ints := tool.LenRandomValueRandom(10, 10)
	fmt.Println(ints)
	println(GetMax(ints))
}

func GetMax(arr []int) int {

	return GetMaxProcess(arr, 0, len(arr)-1)
}
func GetMaxProcess(arr []int, L, R int) int {
	//设置递归出口也就是当只有一个数的时候他自身就是最大的
	if L == R {
		return arr[L]
	}
	// 2. 处理当前层
	mid := (L + R) / 2
	// 3. 将较大问题转为较小问题
	leftMax := GetMaxProcess(arr, L, mid)
	rightMax := GetMaxProcess(arr, mid+1, R)
	// 3. 将较大问题转为较小问题
	return int(math.Max(float64(leftMax), float64(rightMax)))
}
